如何提取数据库中的"|"中的内容

来源:百度知道 编辑:UC知道 时间:2024/06/17 22:31:29
user数据表
loadmych字段(有多个信息分别用|来分割信息)
我想实现提取这其中的一个怎么搞?
比如
loadmych里有
aa|bb|1|dd|ee|ff
aa|bb|2|dd|ee|ff
aa|bb|1|dd|ee|ff
aa|bb|2|dd|ee|ff

sex1="1"
sex="2"

sql="select * from [user] where userinfo(2)="&sex1&" order by userid desc"
这语法怎么说userinfo没定义?
怎么实现?
sql="select * from [user] where loadmych(2)="&sex1&" order by userid desc"

SQL里不能这么写吧
我觉得你只能把loadmych读出来再分析userinfo(2)的值是不是等于sex1。

这样用like语句也可以的,
sql="select * from [user] where loadmych like '%|"&sex1&"|%' order by userid desc"

当然如果|1| 这个字符在同一个字段的其他位子可能出现的话,
可以参考下面的方面,起一个sql split 函数

create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end

用法:select * from dbo.f_split('ABC:BC:C:D:E',':')